package _12_Object._02_Finalize;
/**
 * JVM 四大特性 :
 * 	跨平台,面向对象,多线程,自动垃圾回收机制
 * 
 *  关于 Object 中的 finalize 方法
 *  	什么时候调用?
 *  1.finalize方法是每个 java 对象都有的
 *  2.不需要程序员调用,由系统自动调用
 *  3.当一个垃圾对象被回收之前,会自动调用该对象的 finalize 方法
 *  什么是垃圾?
 *  	没有更多的引用指向这个对象的时候,该对象被视为垃圾数据
 *  4.finalize 方法,并没有回收垃圾的功能,比如我们手动调用这个方法,这只是一个
 *  成员方法调用而已,不会被回收
 *  5.如果我们需要在某个对象被回收之前做一些事情,就可以覆写finalize方法
 * @author lenovo
 * @Date 2020年7月10日
 * @Time 下午9:19:04
 */
public class Finalize_01 {

	public static void main(String[] args) {
		// xxxx1
		Person p = new Person();
		// 没有引用指向这个对象,等待被回收
		p = null;
		// 我们可以建议 JVM 回收
//		System.gc();
		for (int i = 0; i < 1000; i++) {
//			System.gc();
			new Person();
		}
	}

}

class Person {
	@Override
	protected void finalize() throws Throwable {
		System.out.println("马上就要被回收了!");
	}
}